﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.IO;

namespace DragDraw.Service
{
    // NOTE: If you change the interface name "IUserService" here, you must also update the reference to "IUserService" in Web.config.
    [ServiceContract]
    public interface IUserService
    {
        [OperationContract]// 登录
        bool Login(string username, string password);
        [OperationContract]// 注册
        bool Register(UserInfo userInfo, string password);
        [OperationContract]// 设置用户信息
        bool SetUserInfo(UserInfo user);
        [OperationContract]// 获取用户信息
        UserInfo GetUserInfo(string userID);
        [OperationContract]// 获取所有用户的ID
        List<string> GetUserList();
        [OperationContract]// 设置用户密码
        bool SetPassword(string userID, string password);

        [OperationContract]// 获取用户空间信息
        SpaceInfo GetSpaceInfo(string userID);
        [OperationContract]// 设置用户空间信息
        bool SetSpaceInfo(SpaceInfo spaceInfo);

        [OperationContract]
        List<WidgetInfo> GetWidgetList(int spaceID);
        [OperationContract]
        int AddWidgetInfo(WidgetInfo widgetInfo);
        [OperationContract]
        bool DeleteWidgetInfo(int spaceID, int widgetID);
        [OperationContract]
        bool UpdateWidgetInfo(WidgetInfo widgetInfo);

        [OperationContract]// 获取小工具所保存的信息
        string GetSession(int widgetID, string sessionName);
        [OperationContract]// 保存小工具自身需要的特殊信息
        bool SetSession(int widgetID, string sessionName, string sessionValue);

        [OperationContract]// 获取指定用户的朋友列表
        List<string> GetFriendList(string userID);
        [OperationContract]// 为requestUserID增加一个朋友，目标为friendID
        bool AddFriend(string requestUserID, string friendID);
        [OperationContract]// 删除一个朋友关系
        bool DelFriend(string requestUserID, string friendID);

        [OperationContract]// 上传文件到指定用户的存储空间中
        string UploadFile(string userID, string filename, byte[] data);

        [OperationContract]// 发送一个系统消息
        bool SendMessage(string srcID, string destID, string tag, string body);
        [OperationContract]// 返回所有Message
        List<SysMessage> GetMessageList(string userID);
        [OperationContract]
        SystemSetting GetSystemSetting();
        [OperationContract]
        string GetLastError();
    }
}
